package com.neusoft.tijian.mapper;

import com.neusoft.tijian.dto.CalendarRequestDto;
import com.neusoft.tijian.dto.CalendarResponseDto;
import com.neusoft.tijian.dto.OrdersMapperDto;
import com.neusoft.tijian.po.Orders;
import com.sun.org.apache.xpath.internal.operations.Or;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface OrdersMapper {
    //1. orders/getOrdersByUserId
    //  ○ 参数：Orders对象
    //  ○ 返回值：int
    //  ○ 功能：根据电话号码查询是否预约过（凡是有未归档的预约记录的用户，不能再次预约）
    @Select("select * from orders Where userId = #{userId}")
    int getOrdersByUserId(Orders orders);
    //2. orders/saveOrders
    //  ○ 参数：Orders对象
    //  ○ 返回值：int
    //  ○ 功能：添加体检预约信息
    @Insert("insert into orders(orderDate,userId,hpId,smId,state) value(#{orderDate},#{userId},#{hpId},#{smId},#{state})")
    int saveOrders(Orders orders);
    //3. orders/listOrdersByUserId
    //  ○ 参数：Orders对象
    //  ○ 返回值：List（泛型：Orders）
    //  ○ 功能：根据用户编号和订单状态查询体检预约列表
    @Select("select * from orders where userId = #{userId} and state = #{state}")
    List<Orders> listOrdersByUserId(Orders orders);
    //4. orders/removeOrders
    //  ○ 参数：Orders对象
    //  ○ 返回值：int
    //  ○ 功能：根据体检预约编号删除体检预约信息
    @Delete("delete * from orders where orderId = #{orderId}")
    int removeOrders(Orders orders);
    //5. orders/getOrdersById
    //  ○ 参数：Orders对象
    //  ○ 返回值：Orders对象
    //  ○ 功能：根据体检预约编号查询体检预约信息
    @Select("select * from orders where orderId = #{orderId}")
    Orders getOrdersById(Orders orders);

    /**
     * 根据paramList，查询30天预约日期中，每一天的已预约人数
     */
    public List<CalendarResponseDto> listAppointmentCalendarNumber(List<OrdersMapperDto> paramList);
}
